#!/usr/bin/env python
# @Date    : 2022-04-25
# @Author  : Bright (brt2@qq.com)
# @Link    : https://gitee.com/brt2
# @Version : 0.2.1

import os.path as osp

try:
    import bottle
except ImportError:
    import sys
    sys.path.append(osp.join(osp.dirname(__file__), "../bottle-dev"))
    print(">>> use: Bottle v0.13-dev")
    import bottle

#####################################################################
# 标准接口函数
#####################################################################

def app_run(app, *args, **kwargs):
    return app.run(*args, **kwargs)

def make_app(app_name, **kwargs):
    import bottle as Application
    return Application

#####################################################################
# 补充接口函数
#####################################################################

def url_for(url, *args, **kwargs):
    assert len(kwargs) == 1, "Bottle::url_for() 暂时不支持多参数"
    for v in kwargs.values():
        url = osp.join(url, v)
    return url

#####################################################################
# 功能函数
#####################################################################

from bottle import redirect
from bottle import static_file

def set_static_path(path_dir):
    # bottle.TEMPLATE_PATH.insert(0, path_dir)
    bottle.TEMPLATE_PATH.append(path_dir)

# 将bottle的默认模板更换为Jinja2
from bottle import jinja2_template as render_template
# 或者通过bottle调用SimpleTemplate
# from bottle import template as render_template
render_template_string = render_template

#####################################################################
# 子模块
#####################################################################
from bottle import request

def request_data(type_):
    if type_ == "form":
        return request.forms.decode()
    elif type_ == "query":
        return request.query.decode()  # .items()
    elif type_ == "header":
        return request.headers
    else:
        NotImplementedError(f"未实现【{type_}】类型的request解析")
